<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</body>
<script>

    // var arr = [1, 2, 3, 4, 5]
    // var obj={
    //     name:'zs',
    //     age:12,
    //     gender:'男'
    // }
    // function fn() {
    //     console.log(this);
    // }
    // //把要操作的对象当作参数传进来
    // fn.call(obj)

    //如果函数需要传入实参
    var arr = [1, 2, 3]
    function fn(a, b) {
        console.log(a + b);
        console.log(this);
    }
    // fn.call(arr, 4, 5)

    //apply
    fn.apply(arr, [5, 6])
    //apply和call的区别是传入实参时apply是以数组传入的
    //利用call将伪数组转为数组

    var lis=document.querySelectorAll('li')
    console.log(lis);//此时lis是伪数组，并不具有数组方法，只能用for来遍历

   var lis= Array.prototype.slice.call(lis)//
   console.log(lis);
   //后台管理
   //excel pdf预览
  

</script>

</html>